package com.cn.wanxi.util;

import java.io.*;
import java.util.List;

public class IOTool {
    private IOTool() {
    }

    private static File file = null;

    /**
     * 创建文件
     *
     * @param fileName 文件名
     * @return 文件
     */
    public static void createNote(String fileName) {
//        创建文件夹--根据路径

        File directory = new File(PathEnum.PATH.getPath());
        //        如果不存在，则创建，如果存在则不管
        if (!directory.exists()) {
            directory.mkdirs();
        }
//        根据路径和文件名称创建文件
        File newFile = new File(directory, fileName);
        try {
            newFile.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
//        返回当前路径，目的为了第二第三步，写入数据和读取数据
        file = newFile;//如果全局变量和局部变量名称一致，则遵循就近原则
    }

    /**
     * 寫入数据
     *
     */
    public static void writeData(String fileName, List<String> list) {
        createNote(fileName);
//        父类  需要子类进行夸张
        String split = "\n";//如果出現多次,则需要讲这些提取成变量
        try {
            OutputStream outputStream = new FileOutputStream(file);
//            String logo = companyDao.getLogo();//如果是字符串不能强制转换为整型
//            outputStream.write(logo.getBytes());
////            分隔符最好以当前字符不存在的字符来做
//            outputStream.write(split.getBytes());
//            outputStream.write(companyDao.getPhone().getBytes());
//            outputStream.write(split.getBytes());
//            outputStream.write(companyDao.getNet().getBytes());
//            outputStream.write(split.getBytes());
//            outputStream.write(companyDao.getEmail().getBytes());
//            outputStream.write(split.getBytes());
//            outputStream.write(companyDao.getAddress().getBytes());
//            outputStream.write(split.getBytes());
//            outputStream.write(companyDao.getLinePhone().getBytes());
//            outputStream.write(split.getBytes());
//            outputStream.write(companyDao.getVersion().getBytes());
//            outputStream.write(split.getBytes());
//   在数组或者集合的情况下，我们会用循环遍历
//            String [] datas={companyDao.getLogo(),companyDao.getPhone(),companyDao.getEmail()};
//            數組和集合的区别？或者优势
            for (int i = 0; i < list.size(); i++) {
                outputStream.write(list.get(i).getBytes());
                outputStream.write(split.getBytes());
            }
//       将对象里面的数据转换为一个字符串
//            outputStream.write(companyDao.toString().getBytes());
//            这里是按照字节数进行存取
//            那些字符占多少个字节？
//            英文和特殊字符占一个字节
//            中文 utf-8  三个字节  gbk gbk2312 2个字节
//            十六进制，，utf-8  4个字节  gbk gbk2312 1个字节
//            写入的是整型。显示的是字符
//            存在字符和整型的转换
//            int---char
//            char---int
//            int a=1;//4
//            char c='1';//2
//            a=c; //向上转型  自动转换
//            c= (char) a;//向下转型  强制转换
//            如果需要正确显示，需要转换成符号  字符串符号
//            通过ascii码进行转换
//            字符流和缓冲流的区别？
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    /**
     * 根据文件路径读取数据
     *
     * @return
     */
    public static String readData() {
        /**
         * String 和StringBuilder和StringBuffer的區別？
         */
        StringBuilder result = new StringBuilder();
//        int a=1;
//        a+=1;
//        a=a+1;
        try {
//            InputStream inputStream=new FileInputStream(file);
//            int read = 0;
//            while ((read = inputStream.read())!=-1){
//                System.out.print((char) read);
//            }
//            在中文的情況下，读取出来是乱码
//            因为我们用的是字节流
//            需要字符流
            Reader reader = new FileReader(file);
            int read = 0;
            while ((read = reader.read()) != -1) {
//                System.out.print((char) read);
                result.append((char) read);//字符串拼接
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result.toString();
    }

}
